import 'package:ideology/shared/widgets/code_input/highlight/highlight_theme.dart';
import 'package:ideology/shared/widgets/code_input/highlight/syntax_highlighter.dart';

/// **语法高亮预设**（Preset）。
///
/// - 将 [SyntaxHighlighter] 与 [HighlightTheme] 进行组合，
///   打包成一个便于直接使用的对象；
/// - 通常由 `makeXxxPreset(TextStyle base)` 工厂方法创建，
///   比如 `makeDartishPreset`、`makeJavaishPreset`、`makePlainPreset` 等；
/// - 这样可以一次性得到“语法分析器 + 主题配色”，
///   方便在编辑器或代码展示控件中直接注入使用。
///
/// ### 字段
/// - [highlighter]：逐行解析文本并生成 token 的高亮器；
/// - [theme]：不同 token 类型对应的文本样式。
///
/// ### 使用示例
/// ```dart
/// final preset = makeDartishPreset(
///   const TextStyle(fontFamily: 'Fira Code', fontSize: 14),
/// );
///
/// // 在编辑器中使用：
/// final spans = preset.highlighter.buildSpansForLine(0, 'class Example {}');
/// final themedText = RichText(text: TextSpan(children: spans));
/// ```
class SyntaxPreset {
  /// 逐行解析文本的高亮器。
  final SyntaxHighlighter highlighter;

  /// Token 类型映射到样式的主题。
  final HighlightTheme theme;

  /// 构造函数：需显式传入 [highlighter] 与 [theme]。
  const SyntaxPreset({
    required this.highlighter,
    required this.theme,
  });
}
